package Sort;

import java.util.Comparator;

/**
 *
 * @author pol
 */
public class SelectionSort {

    /**
     * Сортировка выбором
     *
     * @param obj сортируемый массив
     * @param cmp компаратор, по которому происходит сравнение объектов
     */
    public static void sort(Object[] obj, Comparator cmp) {
        int l = 0, r = obj.length;
        for (int i = l; i < r; i++) {
            int min = i;
            for (int j = i + 1; j < r; j++) {
                if (cmp.compare(obj[j], obj[min]) < 0) {
                    min = j;
                }
            }
            if (min != i) {
                swap(obj, i, min);
            }
        }
    }

    /**
     * Меняет два элемента в массиве местами
     *
     * @param x массив
     * @param a индекс первого элемента
     * @param b индекс второго элемента
     */
    private static void swap(Object[] x, int a, int b) {
        Object t = x[a];
        x[a] = x[b];
        x[b] = t;
    }
}
